import java.util.Scanner;

/**
 * @Author 12629
 * @Description：
 */
class Person implements Cloneable{

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
public class Test2 {

    public static int func() {
        int a = 10;
        try {
            return a;
        }catch (NullPointerException e) {

        }finally {
            return 100;//会被执行 不建议再finally当中 return
        }
    }

    public static void func2() {
        /*try {
            int a = 0;
            System.out.println(10/a);
        }catch (ArithmeticException e) {

        }*/
        int a = 0;
        System.out.println(10/a);
    }

    public static void main(String[] args) {
        try {
            func2();
        }catch (ArithmeticException e) {
            e.printStackTrace();
            System.out.println("抛出了一个异常！");
        }finally {

        }


       /* int ret = func();
        System.out.println(ret);*/
    }

    public static void main4(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        try {
            System.out.println(10/a);
        }catch (ArithmeticException e) {
            e.printStackTrace();
            System.out.println("捕获到了算术异常！");
        }finally {
            scanner.close();//释放资源 防止资源泄露 一般在finally代码中进行一些资清理的扫尾工作
            System.out.println("finally，不管是否抛出异常，都被执行了");
        }
        System.out.println("其他业务代码");
    }


    public static void main2(String[] args)  {

        int a = 0;
        try {
            System.out.println(10/a);

            int[] array = null;
            System.out.println(array.length);
            //程序既然已经发生异常了 说明这个业务是有问题的 所以下面的代码将不会被执行
            System.out.println("12334");
        //写在一起了 不过太模糊了 不能确定是哪个
        }/*catch (ArithmeticException | NullPointerException e) {
            System.out.println("捕获到了异常！");
        }*/
        catch (ArithmeticException e) {
            e.printStackTrace();//打印栈上的异常信息  / by zero at Test2.main(Test2.java:73)
            System.out.println("捕获到了算术异常！");
        }catch (NullPointerException e) {
            System.out.println("捕获空指针异常！");
        } catch (Exception e) {//这个一场是所有异常的父类 把父类放在最后 兜底 但不建议只写这个太笼统了
            System.out.println("捕获到了异常！");
        }
        System.out.println("其他业务代码");
    }

    //throws CloneNotSupportedException 一般放在方法的声明的地方
    public static void test()throws CloneNotSupportedException {
        int a = 0;
        if(a == 0) {
            //抛出一个自定义的异常！
            throw new CloneNotSupportedException("a == 10");
        }
    }

    public static void main1(String[] args) throws CloneNotSupportedException {
        test();
        //System.out.println(10/0);
       /* int[] array = {1,2,3,4,5};
        System.out.println(array[100]);*/
       /* Person person = new Person();
        Person person1 = (Person) person.clone();*/
    }
}